home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / asmutil / dissolve.zip / DISSOLVE.ASM next >
Assembly Source File  |  1987-04-24  |  2KB  |  54 lines

  1.         PAGE 60,132
  2.         TITLE DISSOLVE.COM
  3.  
  4. ;    Revised from MELT.COM to work with Mono and Color text screens
  5. ;    by Colin Stearman[71036,256]
  6.  
  7. CODE    SEGMENT
  8.         ORG 100H
  9.     ASSUME CS:CODE,DS:CODE,ES:CODE
  10.  
  11. START:
  12.          MOV    AH,15                   ; GET VIDEO STATE
  13.          INT    10H
  14.      MOV    DX,2000            ; BYTES TO IN 80X25 SCREEN
  15.          MOV    BX,0B000H               ; MONO SCREEN
  16.          CMP    AL,7
  17.          JE     GO
  18.          MOV    BX,0B800H        ; COLOR SCREEN
  19.          CMP    AL,3                    ; COLOR TEXT?
  20.      JA    EXIT            ; NOT TEXT MODE
  21.          CMP    AL,1                    ; 80X25 COLOR?
  22.          JA     GO
  23.      SHR    DX,1            ; ONLY 1000 BYTES TO DO
  24. GO:      MOV    ES,BX             ; set es to screen segment
  25. J105:    MOV    CX,DX            ; set bytes in screen
  26.          XOR    BX,BX             ; set flag to say we changed a byte
  27.          XOR    DI,DI                   ; start at offset zero
  28. J10D:
  29.          MOV    AX,ES:[DI]         ; get character and attribute
  30.          CMP    AX,0720H          ; is it a space, nothing to change?
  31.          JZ     J127                    ; yes so do nothing
  32.          MOV    AH,7                    ; clear attribute
  33.          CMP    AL,' '                  ; space with wrong attribute?
  34.          JL     J120            ; is it less than a space?
  35.          DEC    AL                      ; no so decrease 1 towards space
  36.          JMP    SHORT J121
  37. J120:
  38.          INC    AL
  39. J121:
  40.          MOV    ES:[DI],AX
  41.      INC    BX             ; say we changed something
  42. J127:
  43.          INC    DI
  44.          INC    DI
  45.          LOOP    J10D             ; do all bytes in screen
  46.          CMP    BX,00             ; did we change something?
  47.          JNZ    J105             ; yes so do it all over till all spaces
  48. EXIT:
  49.          MOV    AH,4CH            ; return to DOS
  50.          INT    21H 
  51.  
  52. CODE    ENDS
  53.         END START
  54.